/*
给定一个数组，其中只有一个数x出现一次，别的数都出现3次，找出这个数x。（线性时间复杂度）
*/
public static int appearOnce(int[] nums){
        int len = nums.length;
        int[] bits = new int[32];
        for(int i = 0 ; i < len; i++)
            for(int j = 0; j < 32; j++)
                bits[j] += ((nums[i]>>j)&1);

        int result = 0;
        for(int i = 0 ; i < 32; i++){
            if(bits[i] % 3 == 1) result += 1 << i; 
        }
        return result;
    }